Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

152
Vistas
Solo código de JavaScript que devuelve "No se pueden leer las propiedades de undefined" cuando se debe definir la propiedad del objeto

He estado tratando de resolver esto durante dos horas. El objeto tiene todos los detalles allí, debería poder encontrar esos detalles una vez llamado. Pero no lo es. Gracias por cualquier ayuda.

 if (localStorage.getItem("contactDetails")){ println("Name: " + contact.firstName); } else { var firstNameVar = prompt("What is your desired first name to log?"); var lastNameVar = prompt("What is your desired last name to log?"); var phoneNumVar = prompt("What is your desired phone number to log?"); var contact = { firstName: firstNameVar, lastName: lastNameVar, phoneNum: phoneNumVar } localStorage.setItem("contactDetails", JSON.stringify(contact)); }

El error

He intentado cambiar entre localStorage y llamarlo directamente, he intentado usar el método object["item"] en lugar de solo object.item, y algunas otras cosas.

EDITAR: Voy a tener que volver a este. He probado todas las sugerencias y sigue sin funcionar. Mi cerebro está extremadamente frito por 3 horas de un problema. Este es el código completo, no hay más código que este. Volveré en otro momento por esto. ¡Gracias por su paciencia!

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Prueba esto :

 let contact = localStorage.getItem("contactDetails") if (!!contact){ println("Name: " + contact.firstName); } else { let firstNameVar = prompt("What is your desired first name to log?"); let lastNameVar = prompt("What is your desired last name to log?"); let phoneNumVar = prompt("What is your desired phone number to log?"); contact = { firstName: firstNameVar, lastName: lastNameVar, phoneNum: phoneNumVar } localStorage.setItem("contactDetails", JSON.stringify(contact)); }

PD: Evite usar var , en su lugar use let o const .

La razón por la que insisto en no usar var en lugar de usar let o const es la siguiente:

Este código imprimirá la variable global aunque globalVar esté definido dentro de la instrucción if debido a la propiedad de alcance de var .

 if(true){ var globalVar = "Global Variable" } console.log(globalVar);

Este código le dará un error , ya que no ha definido scopedLet outside if y aún intenta acceder a esa variable.

 if(true){ let scopedLet = "Scoped Let variable" } console.log(scopedLet);

Lo mismo ocurre con const .

 if(true){ const scopedConst = "Scoped const variable" } console.log(scopedConst)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Tienes dos problemas aquí.

Un problema es que cuando llama a localStorage.setItem("contactDetails", JSON.stringify(contact)); , está almacenando una cadena, por lo que cuando llama a localStorage.getItem("contactDetails") obtiene una cadena de vuelta. Para solucionar esto, debe envolverlo en un JSON.parse(), por lo que se parece a esto: JSON.parse(localStorage.getItem("contactDetails")) .

El segundo problema es que está llamando a contact.firstName antes de definir la variable contact. Para solucionar esto, debe cambiar su declaración if para que se vea así: if (localStorage.getItem("contactDetails")){ let contact = JSON.parse(localStorage.getItem("contactDetails")) println("Name: " + contact.firstName); }

Espero que esto tenga sentido.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Hay dos problemas en su código que he notado.


Número 1

Está solicitando el valor de contact.firstName antes de definirlo.

Para solucionar esto, debe cambiar el interior de la declaración if al código a continuación.

 let t = JSON.parse(localStorage.getItem("contactDetails")) console.log("Name: " + contact.firstName);

Nota: cambié un poco la sintaxis porque no se parecía a JavaScript.

Número 2

Cuando llama a JSON.stringify() en su JSON y lo almacena en localStorage , lo está almacenando en una string . Sin embargo, cuando obtiene la clave, no está analizando el JSON. Para volver a cambiarlo, debe usar el código a continuación cuando obtenga la clave.

 JSON.parse(localStorage.getItem("contactDetails"));\
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda